using System;
using System.Collections.Generic;
using System.Text;
using Entidades;
using DataAccessArquitectura;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

/*
 * Nombre archivo: comisionBuilder.cs 
 *
 * Descripcion: Manipulacion de la tabla comision, con los metodos de consulta, grabado, actulaizacion
 * y recuperacion de un registro
 *
 * Autor: PLUS-EW
 * Fecha:  18/01/2012 15:59:48
 *
 * Historial
 * ---------------------------------------------------------
 * Autor            Fecha               Modificación
 *
 */

namespace Reglas_Negocio
{
	public class comisionBuilder
	{
		private const enmTipoBaseDatos mTipoBD = enmTipoBaseDatos.MySQL;

		#region < METODOS PUBLICOS CONSULTA >
		public static DataTable ListarTodos()
		{
			try
			{
				return ListarTodos("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static DataTable ListarTodos(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("*", "comision", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static bool Existe(string filtro)
		{
			int numero = 0;
			bool r = false;
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				numero = Convert.ToInt32(bd.EjecutarSelectScalar("COUNT(*)", "comision", filtro));
				r = (numero > 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS GRABADO >
		public static bool GrabarViaProcedimiento(comision datos)
		{
			int numero = 0;
			bool r = false;
			string filtro = "";
			try
			{
				string strConectionInsert = "INSERT INTO comision (id_emp_fk,dia_de_com,dia_hasta_com,estado_com,quien_autoriza_com,razon_com,fecha_maquina_log,id_usu_fk,nombre_usu,ip_log,id_empr_fk,id_huella_fk) VALUES (?id_emp_fk,?dia_de_com,?dia_hasta_com,?estado_com,?quien_autoriza_com,?razon_com,?fecha_maquina_log,?id_usu_fk,?nombre_usu,?ip_log,?id_empr_fk,?id_huella_fk);";
				string strConectionUpdate = "UPDATE comision SET id_emp_fk = ?id_emp_fk,dia_de_com = ?dia_de_com,dia_hasta_com = ?dia_hasta_com,estado_com = ?estado_com,quien_autoriza_com = ?quien_autoriza_com,razon_com = ?razon_com,fecha_maquina_log = ?fecha_maquina_log,id_usu_fk = ?id_usu_fk,nombre_usu = ?nombre_usu,ip_log = ?ip_log,id_empr_fk = ?id_empr_fk,id_huella_fk = ?id_huella_fk WHERE id_com=?id_com;";

				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				MySqlParameter psqlId_com = new MySqlParameter("?id_com", MySqlDbType.Int64);
				MySqlParameter psqlId_emp_fk = new MySqlParameter("?id_emp_fk", MySqlDbType.Int32);
				MySqlParameter psqlDia_de_com = new MySqlParameter("?dia_de_com", MySqlDbType.Datetime);
				MySqlParameter psqlDia_hasta_com = new MySqlParameter("?dia_hasta_com", MySqlDbType.Datetime);
				MySqlParameter psqlEstado_com = new MySqlParameter("?estado_com", MySqlDbType.VarChar,30);
				MySqlParameter psqlQuien_autoriza_com = new MySqlParameter("?quien_autoriza_com", MySqlDbType.VarChar,150);
				MySqlParameter psqlRazon_com = new MySqlParameter("?razon_com", MySqlDbType.VarChar);
				MySqlParameter psqlFecha_maquina_log = new MySqlParameter("?fecha_maquina_log", MySqlDbType.Datetime);
				MySqlParameter psqlId_usu_fk = new MySqlParameter("?id_usu_fk", MySqlDbType.Int32);
				MySqlParameter psqlNombre_usu = new MySqlParameter("?nombre_usu", MySqlDbType.VarChar,100);
				MySqlParameter psqlIp_log = new MySqlParameter("?ip_log", MySqlDbType.VarChar,100);
				MySqlParameter psqlId_empr_fk = new MySqlParameter("?id_empr_fk", MySqlDbType.Int32);
				MySqlParameter psqlId_huella_fk = new MySqlParameter("?id_huella_fk", MySqlDbType.Int32);

				psqlId_com.Value = datos.Id_com;
				psqlId_emp_fk.Value = datos.Id_emp_fk;
				psqlDia_de_com.Value = datos.Dia_de_com;
				psqlDia_hasta_com.Value = datos.Dia_hasta_com;
				psqlEstado_com.Value = datos.Estado_com;
				psqlQuien_autoriza_com.Value = datos.Quien_autoriza_com;
				psqlRazon_com.Value = datos.Razon_com;
				psqlFecha_maquina_log.Value = datos.Fecha_maquina_log;
				psqlId_usu_fk.Value = datos.Id_usu_fk;
				psqlNombre_usu.Value = datos.Nombre_usu;
				psqlIp_log.Value = datos.Ip_log;
				psqlId_empr_fk.Value = datos.Id_empr_fk;
				psqlId_huella_fk.Value = datos.Id_huella_fk;

				filtro = string.Format("id_com='{0}'", datos.Id_com);
				if (!Existe(filtro))
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionInsert
							, psqlId_com
							, psqlId_emp_fk
							, psqlDia_de_com
							, psqlDia_hasta_com
							, psqlEstado_com
							, psqlQuien_autoriza_com
							, psqlRazon_com
							, psqlFecha_maquina_log
							, psqlId_usu_fk
							, psqlNombre_usu
							, psqlIp_log
							, psqlId_empr_fk
							, psqlId_huella_fk
							);
					MessageBox.Show("Se grabo [comision] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionUpdate
							, psqlId_com
							, psqlId_emp_fk
							, psqlDia_de_com
							, psqlDia_hasta_com
							, psqlEstado_com
							, psqlQuien_autoriza_com
							, psqlRazon_com
							, psqlFecha_maquina_log
							, psqlId_usu_fk
							, psqlNombre_usu
							, psqlIp_log
							, psqlId_empr_fk
							, psqlId_huella_fk
							);
					MessageBox.Show("Se actualizó [comision] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				r = (numero < 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static void GrabarViaSql(comision datos)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                string filtro = string.Format("(DATE(dia_de_com)='{0}' AND id_emp_fk='{1}' AND (estado_com='POR REGISTRAR' OR estado_com='BLOQUEADO')) OR id_com='{2}'", ValidarBuilder.FormatoFechaSinHoraCompara(datos.Dia_de_com), datos.Id_emp_fk, datos.Id_com);
				if (!Existe(filtro))
				{
					bd.EjecutarInsert("comision"
						, new CampoValor("id_emp_fk", datos.Id_emp_fk.ToString())
						, new CampoValor("dia_de_com",ValidarBuilder.FormatoFecha( datos.Dia_de_com))
						, new CampoValor("dia_hasta_com",ValidarBuilder.FormatoFecha( datos.Dia_hasta_com))
						, new CampoValor("estado_com", datos.Estado_com)
						, new CampoValor("quien_autoriza_com", datos.Quien_autoriza_com)
						, new CampoValor("razon_com", datos.Razon_com)
						, new CampoValor("fecha_maquina_log",ValidarBuilder.FormatoFecha( datos.Fecha_maquina_log))
						, new CampoValor("id_usu_fk", datos.Id_usu_fk.ToString())
						, new CampoValor("nombre_usu", datos.Nombre_usu)
						, new CampoValor("ip_log", datos.Ip_log)
						, new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
						, new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
						);
                    //MessageBox.Show("Se grabo [comision] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					bd.EjecutarUpdate("comision", filtro
						, new CampoValor("id_emp_fk", datos.Id_emp_fk.ToString())
						, new CampoValor("dia_de_com",ValidarBuilder.FormatoFecha( datos.Dia_de_com))
						, new CampoValor("dia_hasta_com",ValidarBuilder.FormatoFecha( datos.Dia_hasta_com))
						, new CampoValor("estado_com", datos.Estado_com)
						, new CampoValor("quien_autoriza_com", datos.Quien_autoriza_com)
						, new CampoValor("razon_com", datos.Razon_com)
						, new CampoValor("fecha_maquina_log",ValidarBuilder.FormatoFecha( datos.Fecha_maquina_log))
						, new CampoValor("id_usu_fk", datos.Id_usu_fk.ToString())
						, new CampoValor("nombre_usu", datos.Nombre_usu)
						, new CampoValor("ip_log", datos.Ip_log)
						, new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
						, new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
						);
                    //MessageBox.Show("Se actualizó [comision] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static void GrabarViaSql(comision datos, bool mensaje)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				string filtro = string.Format("id_com='{0}'", datos.Id_com);
				if (!Existe(filtro))
				{
					bd.EjecutarInsert("comision"
						, new CampoValor("id_emp_fk", datos.Id_emp_fk.ToString())
						, new CampoValor("dia_de_com",ValidarBuilder.FormatoFecha( datos.Dia_de_com))
						, new CampoValor("dia_hasta_com",ValidarBuilder.FormatoFecha( datos.Dia_hasta_com))
						, new CampoValor("estado_com", datos.Estado_com)
						, new CampoValor("quien_autoriza_com", datos.Quien_autoriza_com)
						, new CampoValor("razon_com", datos.Razon_com)
						, new CampoValor("fecha_maquina_log",ValidarBuilder.FormatoFecha( datos.Fecha_maquina_log))
						, new CampoValor("id_usu_fk", datos.Id_usu_fk.ToString())
						, new CampoValor("nombre_usu", datos.Nombre_usu)
						, new CampoValor("ip_log", datos.Ip_log)
						, new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
						, new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
						);
					if(mensaje)
						MessageBox.Show("Se grabo [comision] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					bd.EjecutarUpdate("comision", filtro
						, new CampoValor("id_emp_fk", datos.Id_emp_fk.ToString())
						, new CampoValor("dia_de_com",ValidarBuilder.FormatoFecha( datos.Dia_de_com))
						, new CampoValor("dia_hasta_com",ValidarBuilder.FormatoFecha( datos.Dia_hasta_com))
						, new CampoValor("estado_com", datos.Estado_com)
						, new CampoValor("quien_autoriza_com", datos.Quien_autoriza_com)
						, new CampoValor("razon_com", datos.Razon_com)
						, new CampoValor("fecha_maquina_log",ValidarBuilder.FormatoFecha( datos.Fecha_maquina_log))
						, new CampoValor("id_usu_fk", datos.Id_usu_fk.ToString())
						, new CampoValor("nombre_usu", datos.Nombre_usu)
						, new CampoValor("ip_log", datos.Ip_log)
						, new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())
						, new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
						);
					if(mensaje)
						MessageBox.Show("Se actualizó [comision] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
        public static void ActualizarEstadoViaSql(comision datos)
        {
            try
            {
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                string filtro = string.Format("id_com='{0}'", datos.Id_com);

                bd.EjecutarUpdate("comision", filtro                   
                    , new CampoValor("estado_com", datos.Estado_com)                   
                    , new CampoValor("fecha_maquina_log", ValidarBuilder.FormatoFecha(datos.Fecha_maquina_log))
                    , new CampoValor("id_usu_fk", datos.Id_usu_fk.ToString())
                    , new CampoValor("nombre_usu", datos.Nombre_usu)
                    , new CampoValor("ip_log", datos.Ip_log)
                    , new CampoValor("id_empr_fk", datos.Id_empr_fk.ToString())                    
                    );               
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
		#endregion

		#region < METODOS PUBLICOS RECUPERACION >
		public static comision Recuperar(string filtro)
		{
			comision r = new comision();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_com = Convert.ToInt64(ds.Rows[0]["id_com"]);
					r.Id_emp_fk = Convert.ToInt32(ds.Rows[0]["id_emp_fk"]);
					if (ds.Rows[0]["dia_de_com"] != System.DBNull.Value)
						r.Dia_de_com = Convert.ToDateTime(ds.Rows[0]["dia_de_com"]);
					if (ds.Rows[0]["dia_de_com"] == System.DBNull.Value)
						r.Dia_de_com = DateTime.Now;
					if (ds.Rows[0]["dia_hasta_com"] != System.DBNull.Value)
						r.Dia_hasta_com = Convert.ToDateTime(ds.Rows[0]["dia_hasta_com"]);
					if (ds.Rows[0]["dia_hasta_com"] == System.DBNull.Value)
						r.Dia_hasta_com = DateTime.Now;
					if (ds.Rows[0]["estado_com"] != System.DBNull.Value)
						r.Estado_com = ds.Rows[0]["estado_com"].ToString();
					if (ds.Rows[0]["estado_com"] == System.DBNull.Value)
						r.Estado_com = "";
					if (ds.Rows[0]["quien_autoriza_com"] != System.DBNull.Value)
						r.Quien_autoriza_com = ds.Rows[0]["quien_autoriza_com"].ToString();
					if (ds.Rows[0]["quien_autoriza_com"] == System.DBNull.Value)
						r.Quien_autoriza_com = "";
					if (ds.Rows[0]["razon_com"] != System.DBNull.Value)
						r.Razon_com = ds.Rows[0]["razon_com"].ToString();
					if (ds.Rows[0]["razon_com"] == System.DBNull.Value)
						r.Razon_com = "";
					if (ds.Rows[0]["fecha_maquina_log"] != System.DBNull.Value)
						r.Fecha_maquina_log = Convert.ToDateTime(ds.Rows[0]["fecha_maquina_log"]);
					if (ds.Rows[0]["fecha_maquina_log"] == System.DBNull.Value)
						r.Fecha_maquina_log = DateTime.Now;
					r.Id_usu_fk = Convert.ToInt32(ds.Rows[0]["id_usu_fk"]);
					if (ds.Rows[0]["nombre_usu"] != System.DBNull.Value)
						r.Nombre_usu = ds.Rows[0]["nombre_usu"].ToString();
					if (ds.Rows[0]["nombre_usu"] == System.DBNull.Value)
						r.Nombre_usu = "";
					if (ds.Rows[0]["ip_log"] != System.DBNull.Value)
						r.Ip_log = ds.Rows[0]["ip_log"].ToString();
					if (ds.Rows[0]["ip_log"] == System.DBNull.Value)
						r.Ip_log = "";
					r.Id_empr_fk = Convert.ToInt32(ds.Rows[0]["id_empr_fk"]);
					r.Id_huella_fk = Convert.ToInt32(ds.Rows[0]["id_huella_fk"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static comision Recuperar_sin_joins(string filtro)
		{
			comision r = new comision();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_com = Convert.ToInt64(ds.Rows[0]["id_com"]);
					r.Id_emp_fk = Convert.ToInt32(ds.Rows[0]["id_emp_fk"]);
					if (ds.Rows[0]["dia_de_com"] != System.DBNull.Value)
						r.Dia_de_com = Convert.ToDateTime(ds.Rows[0]["dia_de_com"]);
					if (ds.Rows[0]["dia_de_com"] == System.DBNull.Value)
						r.Dia_de_com = DateTime.Now;
					if (ds.Rows[0]["dia_hasta_com"] != System.DBNull.Value)
						r.Dia_hasta_com = Convert.ToDateTime(ds.Rows[0]["dia_hasta_com"]);
					if (ds.Rows[0]["dia_hasta_com"] == System.DBNull.Value)
						r.Dia_hasta_com = DateTime.Now;
					if (ds.Rows[0]["estado_com"] != System.DBNull.Value)
						r.Estado_com = ds.Rows[0]["estado_com"].ToString();
					if (ds.Rows[0]["estado_com"] == System.DBNull.Value)
						r.Estado_com = "";
					if (ds.Rows[0]["quien_autoriza_com"] != System.DBNull.Value)
						r.Quien_autoriza_com = ds.Rows[0]["quien_autoriza_com"].ToString();
					if (ds.Rows[0]["quien_autoriza_com"] == System.DBNull.Value)
						r.Quien_autoriza_com = "";
					if (ds.Rows[0]["razon_com"] != System.DBNull.Value)
						r.Razon_com = ds.Rows[0]["razon_com"].ToString();
					if (ds.Rows[0]["razon_com"] == System.DBNull.Value)
						r.Razon_com = "";
					if (ds.Rows[0]["fecha_maquina_log"] != System.DBNull.Value)
						r.Fecha_maquina_log = Convert.ToDateTime(ds.Rows[0]["fecha_maquina_log"]);
					if (ds.Rows[0]["fecha_maquina_log"] == System.DBNull.Value)
						r.Fecha_maquina_log = DateTime.Now;
					r.Id_usu_fk = Convert.ToInt32(ds.Rows[0]["id_usu_fk"]);
					if (ds.Rows[0]["nombre_usu"] != System.DBNull.Value)
						r.Nombre_usu = ds.Rows[0]["nombre_usu"].ToString();
					if (ds.Rows[0]["nombre_usu"] == System.DBNull.Value)
						r.Nombre_usu = "";
					if (ds.Rows[0]["ip_log"] != System.DBNull.Value)
						r.Ip_log = ds.Rows[0]["ip_log"].ToString();
					if (ds.Rows[0]["ip_log"] == System.DBNull.Value)
						r.Ip_log = "";
					r.Id_empr_fk = Convert.ToInt32(ds.Rows[0]["id_empr_fk"]);
					r.Id_huella_fk = Convert.ToInt32(ds.Rows[0]["id_huella_fk"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static comision RecuperarUltimo(string filtro)
		{
			comision r = new comision();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_com = Convert.ToInt64(ds.Rows[ds.Rows.Count-1]["id_com"]);
					r.Id_emp_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_emp_fk"]);
					if (ds.Rows[ds.Rows.Count -1]["dia_de_com"] != System.DBNull.Value)
						r.Dia_de_com = Convert.ToDateTime(ds.Rows[ds.Rows.Count -1]["dia_de_com"]);
					if (ds.Rows[ds.Rows.Count -1]["dia_de_com"] == System.DBNull.Value)
						r.Dia_de_com = DateTime.Now;
					if (ds.Rows[ds.Rows.Count -1]["dia_hasta_com"] != System.DBNull.Value)
						r.Dia_hasta_com = Convert.ToDateTime(ds.Rows[ds.Rows.Count -1]["dia_hasta_com"]);
					if (ds.Rows[ds.Rows.Count -1]["dia_hasta_com"] == System.DBNull.Value)
						r.Dia_hasta_com = DateTime.Now;
					if (ds.Rows[ds.Rows.Count - 1]["estado_com"] != System.DBNull.Value)
						r.Estado_com = ds.Rows[ds.Rows.Count - 1]["estado_com"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["estado_com"] == System.DBNull.Value)
						r.Estado_com = "";
					if (ds.Rows[ds.Rows.Count - 1]["quien_autoriza_com"] != System.DBNull.Value)
						r.Quien_autoriza_com = ds.Rows[ds.Rows.Count - 1]["quien_autoriza_com"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["quien_autoriza_com"] == System.DBNull.Value)
						r.Quien_autoriza_com = "";
					if (ds.Rows[ds.Rows.Count - 1]["razon_com"] != System.DBNull.Value)
						r.Razon_com = ds.Rows[ds.Rows.Count - 1]["razon_com"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["razon_com"] == System.DBNull.Value)
						r.Razon_com = "";
					if (ds.Rows[ds.Rows.Count -1]["fecha_maquina_log"] != System.DBNull.Value)
						r.Fecha_maquina_log = Convert.ToDateTime(ds.Rows[ds.Rows.Count -1]["fecha_maquina_log"]);
					if (ds.Rows[ds.Rows.Count -1]["fecha_maquina_log"] == System.DBNull.Value)
						r.Fecha_maquina_log = DateTime.Now;
					r.Id_usu_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_usu_fk"]);
					if (ds.Rows[ds.Rows.Count - 1]["nombre_usu"] != System.DBNull.Value)
						r.Nombre_usu = ds.Rows[ds.Rows.Count - 1]["nombre_usu"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["nombre_usu"] == System.DBNull.Value)
						r.Nombre_usu = "";
					if (ds.Rows[ds.Rows.Count - 1]["ip_log"] != System.DBNull.Value)
						r.Ip_log = ds.Rows[ds.Rows.Count - 1]["ip_log"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["ip_log"] == System.DBNull.Value)
						r.Ip_log = "";
					r.Id_empr_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_empr_fk"]);
					r.Id_huella_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_huella_fk"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS BORRADO >
		public static void Borrar(string filtro)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				bd.EjecutarDelete("comision", filtro);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static void BorrarTodos()
		{
			try
			{
				Borrar("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS EXTRAS >
		public static void Listar_Combobox(ComboBox cmbcomision, string filtro, string nombre_display)
		{
			cmbcomision.DataSource = ListarTodos(filtro);
			cmbcomision.DisplayMember = nombre_display;
			cmbcomision.ValueMember = "id_com";
		}

		public static DataTable ListarTodos_Alias(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("id_com AS id_com,id_emp_fk AS id_emp_fk,dia_de_com AS dia_de_com,dia_hasta_com AS dia_hasta_com,estado_com AS estado_com,quien_autoriza_com AS quien_autoriza_com,razon_com AS razon_com,fecha_maquina_log AS fecha_maquina_log,id_usu_fk AS id_usu_fk,nombre_usu AS nombre_usu,ip_log AS ip_log,id_empr_fk AS id_empr_fk,id_huella_fk AS id_huella_fk", "comision", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static List<comision> ListarTodos_List(string filtro)
		{
			List<comision> r = new List<comision>();
			try
			{
				DataTable dt = ListarTodos(filtro);
				for (int i = 0; i < dt.Rows.Count; i++)
					r.Add(Recuperar("id_com="+dt.Rows[i]["id_com"]));
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
        public static DataTable ListarTodos_Alias_presenta(string filtro)
        {
            DataTable r = new DataTable();
            try
            {
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                r = bd.EjecutarSelectDs("id_com AS Id,dia_de_com AS Dia,dia_hasta_com AS Termina,estado_com AS Estado,quien_autoriza_com AS \"Autorizado por\",razon_com AS Razon", "comision", filtro).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
		#endregion

		#region < METODOS PUBLICOS VALIDACION >
		public static comision valida_campos_comision(Control ctrl_id_com,Control ctrl_id_emp_fk,DateTime dpk_dia_de_com,DateTime dpk_dia_hasta_com,TextBox txt_estado_com,TextBox txt_quien_autoriza_com,TextBox txt_razon_com,DateTime dpk_fecha_maquina_log,Control ctrl_id_usu_fk,TextBox txt_nombre_usu,TextBox txt_ip_log,Control ctrl_id_empr_fk,Control ctrl_id_huella_fk)
		{
			bool r = true;
			comision new_comision = new comision();
			try
			{
				if(ctrl_id_com.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_com = (TextBox)ctrl_id_com;
					if (txt_id_com.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_com","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt64(txt_id_com.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_com","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_comision.Id_com = Convert.ToInt64(txt_id_com.Text);
				}
				if(ctrl_id_com.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_com = (ComboBox)ctrl_id_com;
					if (cmb_id_com.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_com","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_comision.Id_com = Convert.ToInt64(cmb_id_com.SelectedValue);
				}
				if(ctrl_id_emp_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_emp_fk = (TextBox)ctrl_id_emp_fk;
					if (txt_id_emp_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_emp_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_emp_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_emp_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_comision.Id_emp_fk = Convert.ToInt32(txt_id_emp_fk.Text);
				}
				if(ctrl_id_emp_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_emp_fk = (ComboBox)ctrl_id_emp_fk;
					if (cmb_id_emp_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_emp_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_comision.Id_emp_fk = Convert.ToInt32(cmb_id_emp_fk.SelectedValue);
				}
				if (r)
					new_comision.Dia_de_com = dpk_dia_de_com;
				if (r)
					new_comision.Dia_hasta_com = dpk_dia_hasta_com;
				if (txt_estado_com.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la estado_com","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_comision.Estado_com = txt_estado_com.Text;
				if (txt_quien_autoriza_com.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la quien_autoriza_com","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_comision.Quien_autoriza_com = txt_quien_autoriza_com.Text;
				if (txt_razon_com.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la razon_com","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_comision.Razon_com = txt_razon_com.Text;
				if (r)
					new_comision.Fecha_maquina_log = dpk_fecha_maquina_log;
				if(ctrl_id_usu_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_usu_fk = (TextBox)ctrl_id_usu_fk;
					if (txt_id_usu_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_usu_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_usu_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_usu_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_comision.Id_usu_fk = Convert.ToInt32(txt_id_usu_fk.Text);
				}
				if(ctrl_id_usu_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_usu_fk = (ComboBox)ctrl_id_usu_fk;
					if (cmb_id_usu_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_usu_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_comision.Id_usu_fk = Convert.ToInt32(cmb_id_usu_fk.SelectedValue);
				}
				if (txt_nombre_usu.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la nombre_usu","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_comision.Nombre_usu = txt_nombre_usu.Text;
				if (txt_ip_log.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la ip_log","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_comision.Ip_log = txt_ip_log.Text;
				if(ctrl_id_empr_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_empr_fk = (TextBox)ctrl_id_empr_fk;
					if (txt_id_empr_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empr_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_empr_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_empr_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_comision.Id_empr_fk = Convert.ToInt32(txt_id_empr_fk.Text);
				}
				if(ctrl_id_empr_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_empr_fk = (ComboBox)ctrl_id_empr_fk;
					if (cmb_id_empr_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empr_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_comision.Id_empr_fk = Convert.ToInt32(cmb_id_empr_fk.SelectedValue);
				}
				if(ctrl_id_huella_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_huella_fk = (TextBox)ctrl_id_huella_fk;
					if (txt_id_huella_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_huella_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_huella_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_huella_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_comision.Id_huella_fk = Convert.ToInt32(txt_id_huella_fk.Text);
				}
				if(ctrl_id_huella_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_huella_fk = (ComboBox)ctrl_id_huella_fk;
					if (cmb_id_huella_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_huella_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_comision.Id_huella_fk = Convert.ToInt32(cmb_id_huella_fk.SelectedValue);
				}

				if(!r)
					new_comision = null;
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return new_comision;
		}

		public static void grabar_actualizar_registro(Control ctrl_id_com,Control ctrl_id_emp_fk,DateTime dpk_dia_de_com,DateTime dpk_dia_hasta_com,TextBox txt_estado_com,TextBox txt_quien_autoriza_com,TextBox txt_razon_com,DateTime dpk_fecha_maquina_log,Control ctrl_id_usu_fk,TextBox txt_nombre_usu,TextBox txt_ip_log,Control ctrl_id_empr_fk,Control ctrl_id_huella_fk)
		{
			try
			{
				comision new_comision =valida_campos_comision(ctrl_id_com,ctrl_id_emp_fk,dpk_dia_de_com,dpk_dia_hasta_com,txt_estado_com,txt_quien_autoriza_com,txt_razon_com,dpk_fecha_maquina_log,ctrl_id_usu_fk,txt_nombre_usu,txt_ip_log,ctrl_id_empr_fk,ctrl_id_huella_fk); 
				if(new_comision!=null)
					GrabarViaSql(new_comision);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		public static bool grabar_actualizar_registro_personaliza(Control ctrl_id_com,Control ctrl_id_emp_fk,DateTime dpk_dia_de_com,DateTime dpk_dia_hasta_com,TextBox txt_estado_com,TextBox txt_quien_autoriza_com,TextBox txt_razon_com,DateTime dpk_fecha_maquina_log,Control ctrl_id_usu_fk,TextBox txt_nombre_usu,TextBox txt_ip_log,Control ctrl_id_empr_fk,Control ctrl_id_huella_fk)
		{
			bool r = false;
			try
			{
				comision new_comision =valida_campos_comision(ctrl_id_com,ctrl_id_emp_fk,dpk_dia_de_com,dpk_dia_hasta_com,txt_estado_com,txt_quien_autoriza_com,txt_razon_com,dpk_fecha_maquina_log,ctrl_id_usu_fk,txt_nombre_usu,txt_ip_log,ctrl_id_empr_fk,ctrl_id_huella_fk); 
				if(new_comision!=null)
				{
					r = true;
					GrabarViaSql(new_comision);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		#endregion

	}
}
